'''
@Company: TWL
@Author: xue jian
@Email: xuejian@kanzhun.com
@Date: 2020-07-28 08:07:04
'''
'''
104. 二叉树的最大深度
给定一个二叉树，找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例：
给定二叉树 [3,9,20,null,null,15,7]，

    3
   / \
  9  20
    /  \
   15   7
返回它的最大深度 3 。

tips:这是个简单的题，深度优先搜索就行。写在这是为了纪念自己写出了这么简洁漂亮的程序。
'''

from tree_node import *
class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        def recurse(root):
            if not root:
                return 0
            return max(recurse(root.left), recurse(root.right)) + 1
        
        return recurse(root)

if __name__ == "__main__":
    solution = Solution()
    null = 'null'
    root = [3,9,20,null,null,15,7]
    for i,v in enumerate(root):
        root[i] = str(v)
    s = ','.join(root)
    # print(s)
    o_s = OfficialSerialize()
    root = o_s.deserialize(s)
    print(solution.maxDepth(root))